package concurrent.thread.synchronized_1;

/**
 * 锁消除即删除不必要的加锁操作。锁消除是Java虚拟机在JIT编译期间，通过对运行上下文的扫描，
 * 去除不可能存在共享资源竞争的锁，通过锁消除，可以节省毫无意义的请求锁时间。
 *
 * @author LoneRanger
 * @version 1.0
 */
public class LockEliminationTest {

	/**
	 * 锁消除
	 * -XX:+EliminateLocks 开启锁消除(jdk8默认开启）
	 * -XX:-EliminateLocks 关闭锁消除
	 *
	 * @param str1
	 * @param str2
	 */
	public void append(String str1, String str2) {
		StringBuffer stringBuffer = new StringBuffer();
		stringBuffer.append(str1).append(str2);
	}

	public static void main(String[] args) throws InterruptedException {
		LockEliminationTest demo = new LockEliminationTest();
		long start = System.currentTimeMillis();
		for (int i = 0; i < 100000000; i++) {
			demo.append("aaa", "bbb");
		}
		long end = System.currentTimeMillis();
		System.out.println("执行时间：" + (end - start) + " ms");
	}
}
